package com.ruoyi.system.service.impl;

import java.util.List;

import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.GxPerformance;
import com.ruoyi.system.domain.GxTaskData;
import com.ruoyi.system.mapper.GxPerformanceMapper;
import com.ruoyi.system.service.IGxPerformanceService;
import com.ruoyi.system.service.IGxTaskDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.GxAssessDataMapper;
import com.ruoyi.system.domain.GxAssessData;
import com.ruoyi.system.service.IGxAssessDataService;

import static com.ruoyi.common.utils.SecurityUtils.getLoginUser;

/**
 * 评估任务对应的某个数据Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-05-17
 */
@Service
public class GxAssessDataServiceImpl implements IGxAssessDataService 
{
    @Autowired
    private GxAssessDataMapper gxAssessDataMapper;

    @Autowired
    private IGxTaskDataService gxTaskDataService;

    @Autowired
    private GxPerformanceMapper gxPerformanceMapper;


    /**
     * 查询评估任务对应的某个数据
     * 
     * @param dataId 评估任务对应的某个数据主键
     * @return 评估任务对应的某个数据
     */
    @Override
    public GxAssessData selectGxAssessDataByDataId(Long dataId)
    {
        return gxAssessDataMapper.selectGxAssessDataByDataId(dataId);
    }

    /**
     * 查询该评估任务中的评定数据个数
     *
     * @param taskId 评定数据报表对应的任务表主键
     * @return 该评估任务中的评定数据个数
     */
    @Override
    public int selectGxAssessDataCountByTaskId(Long taskId)
    {
        return gxAssessDataMapper.selectGxAssessDataCountByTaskId(taskId);
    }

    /**
     * 查询评估任务对应的某个数据列表
     * 
     * @param gxAssessData 评估任务对应的某个数据
     * @return 评估任务对应的某个数据
     */
    @Override
    public List<GxAssessData> selectGxAssessDataList(GxAssessData gxAssessData)
    {
        return gxAssessDataMapper.selectGxAssessDataList(gxAssessData);
    }

    /**
     * 新增评估任务对应的某个数据
     * 
     * @param gxAssessData 评估任务对应的某个数据
     * @return 结果
     */
    @Override
    public int insertGxAssessData(GxAssessData gxAssessData)
    {

        //---------- 添加绩效信息 ----------
        GxPerformance performance = new GxPerformance();
        performance.setTaskId(gxAssessData.getTaskId());
        performance.setPerformCategory("2");// 执行评定绩效
        performance.setCreateTime(DateUtils.getNowDate());
        LoginUser loginUser = getLoginUser();
        SysUser user = loginUser.getUser();
        performance.setUserId(user.getUserId());
        gxPerformanceMapper.insertGxPerformance(performance);


        return gxAssessDataMapper.insertGxAssessData(gxAssessData);
    }

    /**
     * 修改评估任务对应的某个数据
     * 
     * @param gxAssessData 评估任务对应的某个数据
     * @return 结果
     */
    @Override
    public int updateGxAssessData(GxAssessData gxAssessData)
    {
        return gxAssessDataMapper.updateGxAssessData(gxAssessData);
    }

    /**
     * 批量删除评估任务对应的某个数据
     * 
     * @param dataIds 需要删除的评估任务对应的某个数据主键
     * @return 结果
     */
    @Override
    public int deleteGxAssessDataByDataIds(Long[] dataIds)
    {
        return gxAssessDataMapper.deleteGxAssessDataByDataIds(dataIds);
    }

    /**
     * 删除评估任务对应的某个数据信息
     * 
     * @param dataId 评估任务对应的某个数据主键
     * @return 结果
     */
    @Override
    public int deleteGxAssessDataByDataId(Long dataId)
    {
        return gxAssessDataMapper.deleteGxAssessDataByDataId(dataId);
    }
    @Override
    public int deleteGxAssessDataBytaskId(Long taskId) {
        return gxAssessDataMapper.deleteGxAssessDataByTaskId(taskId);
    }
    @Override
    public int deleteGxAssessDataBytaskIds(Long[] taskIds) {
        return gxAssessDataMapper.deleteGxAssessDataByTaskIds(taskIds);
    }

}
